#!/usr/bin/env python
# encoding: utf-8
'''
@author: Excelsiorly
@license: (C) Copyright 2022, All Rights Reserved.
@contact: excelsiorly@qq.com
@file: 470. 用 Rand7() 实现 Rand10().py
@time: 2022/1/20 12:07
@desc: https://leetcode-cn.com/problems/implement-rand10-using-rand7/
> 给定方法rand7可生成 [1,7] 范围内的均匀随机整数，试写一个方法rand10生成 [1,10] 范围内的均匀随机整数。
你只能调用rand7()且不能调用其他方法。请不要使用系统的Math.random()方法。
每个测试用例将有一个内部参数 n，即你实现的函数 rand10() 在测试时将被调用的次数。请注意，这不是传递给 rand10() 的参数。

'''
# The rand7() API is already defined for you.
def rand7():
    pass
# @return a random integer in the range 1 to 7

class Solution(object):
    def rand10(self):
        """
        :rtype: int
        """
        # 随机采样 [1, 6]， 判断奇偶性，1/2
        x = rand7()
        while x>6: x = rand7()
        # 随机采样 [1, 5], 1/5
        y = rand7()
        while y>5: y = rand7()
        return y if x%2==1 else 5+y